// const { resolve, reject } = require('core-js/fn/promise')

// 创建promise对象
// resolve 成功时候，需要调用函数，将promise的状态pending改为fulfilled
// reject 失败时候，需要调用函数，将promise的状态pending改为rejected

const fs = require('fs')

const p1 = new Promise((resolve, reject) => {
  fs.readFile('a.txt', 'utf8', (err, data) => {
    if (err) {
      reject(err)
    } else {
      resolve(data)
    }
  })
})
const p2 = new Promise((resolve, reject) => {
  fs.readFile('b.txt', 'utf8', (err, data) => {
    if (err) {
      reject(err)
    } else {
      resolve(data)
    }
  })
})
const p3 = new Promise((resolve, reject) => {
  fs.readFile('c.txt', 'utf8', (err, data) => {
    if (err) {
      reject(err)
    } else {
      resolve(data)
    }
  })
})
const p4 = new Promise((resolve, reject) => {
  fs.readFile('d.txt', 'utf8', (err, data) => {
    if (err) {
      reject(err)
    } else {
      resolve(data)
    }
  })
})
// promise是为了解决回调嵌套，而存在的
// 依次打印
// promise 支持通过.then 进行链式编码(.then 然后)前面执行完了，才会考虑.then中的内容
// 1.如果返回的是普通的值，在后面一个.then中,可以直接结束
// p1.then(res => {
//   console.log(res)
//   return 100
// }).then((count) => {
//   console.log(count)
//   return count + 1
// }).then((count) => {
//   console.log(count)
//   return count + 1
// }).then((count) => {
//   console.log(count)
// })

// 2.如果返回的是promise对象，在后面一个.then中，接收到的就是成功的结果
p1.then(res => {
  console.log(res)
  return p2
}).then(res => {
  console.log(res)
  return p3
}).then(res => {
  console.log(res)
  return p4
}).then(res => {
  console.log(res)
})
// promise：解决回调嵌套的问题，通过链式，可维护性更高
